﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace AutomatedDecisionMaking.Class
{
    public class DataConverter
    {
        /// <summary>
        /// Metoda statyczna pozwalająca na konwersję danych wprowadzonych przez użytkownika do macierzy
        /// decyzji na listę list tych wartości, a więc na język w pełni zrozumiału dla algorytmów.
        /// </summary>
        /// <param name="table">Macierz decyzji w formacie DataGridView</param>
        /// <returns>Macierz decyzji w formacie list</returns>
        public static List<List<double>> DataGridViewToList(DataGridView table)
        {
            var decisionMatrix = new List<List<double>>();
            
            int rowNo = table.Rows.Count;
            int columnNo = table.Columns.Count;
            for(int i=0; i<rowNo; ++i)
            {
                var matrixRow = new List<double>();
                for(int j=0; j<columnNo; ++j)
                    matrixRow.Add(Convert.ToDouble(table.Rows[i].Cells[j].Value));
                decisionMatrix.Add(matrixRow);
            }
            return decisionMatrix;
        }

        /// <summary>
        /// Metoda statyczna pozwalająca na konwersję danych pochodzacych z obiektu ListBox
        /// do listy łańcuchów tekstowych.
        /// </summary>
        /// <param name="lb">ListBox wraz z wprowadzonymi danymi</param>
        /// <returns>Dane w postacji listy łańcuchów znakowych</returns>
        public static List<string> ListBoxToList(ListBox lb)
        {
            return lb.Items.Cast<string>().ToList();
        }
    }
}
